home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1982 Regents of the University of California */
-
- static char sccsid[] = "@(#)opendir.c 4.4 11/12/82";
-
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <dir.h>
-
- /*
- * open a directory.
- */
- DIR *
- opendir(name)
- char *name;
- {
- register DIR *dirp;
- register int fd;
- struct stat statbuf;
- char *malloc();
-
- if ((fd = open(name, 0)) == -1)
- return NULL;
- if (fstat(fd, &statbuf) == -1 || !(statbuf.st_mode & S_IFDIR)) {
- close(fd);
- return NULL;
- }
- if ((dirp = (DIR *)malloc(sizeof(DIR))) == NULL) {
- close (fd);
- return NULL;
- }
- dirp->dd_fd = fd;
- dirp->dd_loc = 0;
- dirp->dd_size = 0; /* so that telldir will work before readdir */
- return dirp;
- }
-